Intelligent results using an assistant

ABSTRACT

Information may be presented to a user by using a first application to receive a character stream of one or more noncompletion characters. The noncompletion characters indicate that additional characters may be received. The character stream is exchanged with a host that analyzes the character stream to generate results that are responsive to the user&#39;s predicted interest. Results are received and displayed so that the user may select one of the results to launch a code segment related to the selected result.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/734,738 filed Jan. 4, 2013, which is a continuation of U.S. patentapplication Ser. No. 13/184,414 filed on Jul. 15, 2011, which is acontinuation of U.S. patent application Ser. No. 10/651,303 filed Aug.29, 2003, now U.S. Pat. No. 8,005,919, which claims priority to: U.S.Provisional Application Ser. No. 60/426,806 filed Nov. 18, 2002; U.S.Provisional Application Ser. No. 60/427,944 filed Nov. 21, 2002; U.S.Provisional Application Ser. No. 60/471,337 filed May 19, 2003; U.S.Provisional Application Ser. No. 60/471,338 filed May 19, 2003; and U.S.Provisional Application Ser. No. 60/488,400 filed Jul. 21, 2003. Thecontents of each of the aforementioned applications and patents arehereby incorporated by reference in their entirety.

TECHNICAL FIELD

This document relates to content retrieval and presentation.

BACKGROUND

The Internet enables users to access a great amount of information. Auser with a web browser, messaging application, or other proprietaryapplication may retrieve information from large libraries to accessgreat amounts of information. Navigating the great amount of informationcan challenge some users.

SUMMARY

In one general sense, information may be presented to a user by using afirst application to receive a character stream of one or morenon-completion characters that indicate that additional characters maybe received, exchanging the character stream with a host to analyze thecharacter stream to generate results that are responsive to the user'spredicted interest, receiving the results, and displaying the results sothat the user may select one of the results to launch a code segmentrelated to a selected result.

For example, a web browser may receive the character stream in anaddress line and exchange the character stream with a host thatgenerates mapping results that are responsive to the user's predictiveinterest. The web browser receives the mapping results and displays themapping results with an overview map so that the user may select one ofthe overview maps to display more detailed mapping information.

Implementations may include one or more of the following features. Forexample, the first application may receive one or more updates to thecharacter stream, and may exchange the updates to the character streamwith the host to permit the host to analyze the character stream usingthe updates to generate updated results that are responsive to theuser's predicted interest. The updated results may be received anddisplayed so that the user may select one of the updated results tolaunch a code segment related to a selected result.

Exchanging the updates may include exchanging all of the characters inthe character stream, or exchanging one or more characters in thecharacter stream that have been received since the character stream waslast exchanged.

Exchanging the character stream may include determining whether asufficient amount of data in the character stream exists to generateaccurate results, and, if so, analyzing the character stream to displaythe results.

Analyzing the character stream may be delayed when there is aninsufficient amount of data in the character stream to generate accurateresults. Determining whether the sufficient amount of data exists in thecharacter stream may include waiting until a predetermined number ofcharacters has been entered, waiting until a predetermined amount oftime has elapsed since the user last entered a character in thecharacter stream, or waiting until the predetermined number ofcharacters has been entered, unless the predetermined amount of time haselapsed since a last character in the character stream has been entered.

Analyzing the character stream may include identifying results that aremore responsive to the predicted interest of the user. Displaying theresults may include displaying the results that are more responsive tothe predicted interest of the user.

Displaying the results so that the user may select one of the results tolaunch a code segment may include enabling the user to launch a secondapplication that is different from the first application that receivesthe character stream. Exchanging the character stream with a host mayinclude polling multiple databases to identify results from each of themultiple databases.

The user may be enabled to configure the first application to control anoperating mode of the first application. For example, the user may beenabled to select one or more databases to be accessed, to control aformat with which the results are displayed, or to control aconfiguration for a drop down menu used to display results.

The character stream may be analyzed to determine a user profile, whichmay be stored and used to analyze subsequent character streams from thefirst application.

Displaying the results may include displaying a map related to thecharacter stream. Using the first application to receive the characterstream may include analyzing the character stream before exchanging thecharacter stream to identify that map information is related to thecharacter stream. Analyzing the character stream may include recognizingthat a commonly used address term, such as a zip code, a stateidentifier or a city identifier, is present in the character stream.

Using the first application to receive the character stream may includeanalyzing the character stream before exchanging the character stream toidentify that vendor information is related to the character stream, andinstructing the host to return vendor information in the results.Identifying vendor information may include identifying yellow pageinformation related to the character stream or a category and a locationappearing in the character stream.

The character stream may be analyzed for a messaging label appearing inthe character stream. Analyzing the character stream for the messaginglabel and displaying the results may include presenting a messaging codesegment that enables the user to communicate with another user.

Analyzing the character stream may include determining that a useridentifier appears in the character stream. When such a user identifierappears, an online status of a user associated with the user identifiermay be determined. Determining the online status and displaying theresults may include enabling the user to exchange an instant messagewith the user associated with the user identifier. Analyzing thecharacter stream for the messaging label may include recognizing that an‘@’ character appears in the character stream as an indication that anelectronic mail message will be exchanged.

The results may be stored for subsequent access. Storing the resultsincludes storing the results the user has selected. A first applicationmay be used to receive a second stream of one or more non-completioncharacters where the non-completion characters indicate that additionalcharacters may be received. The stored results may be accessed andrelated to the second stream.

The stored results may be displayed when the second stream indicatesthat the user is requesting information related to the stored results.The second stream may be exchanged with the host to analyze the secondstream. Second stream results may be received and displayed so that theuser may select one of the second stream results to launch a codesegment related to the second stream result, when the stored results donot relate to the second stream. The operations described previously maybe performed on a client or a host system.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 illustrates a communications system that may be used tointelligently present results related to a character stream analyzed bya host.

FIG. 2 is a flow chart showing how a client may use a host tointelligently present results related to a character stream.

FIG. 3 is a flow chart showing how a client exchanges a character streamwith a host and receives mapping information related to the characterstream.

FIG. 4 is a flow chart showing how the client display may be modifiedbased on updates to the character stream.

FIGS. 5-10 are exemplary graphical user interfaces (GUIs) illustratinghow real-time results related to a character stream may be presented.

DETAILED DESCRIPTION

The Internet enables access to large volumes of content. A key challengein providing a better access experience for users is enabling the usersto access information most relevant to their interests with the leastamount of effort in retrieving the results.

To assist users, an application enables users to enter a characterstream into an application such as a web browser. The character streamincludes noncompletion characters, which are characters that the usertypes in a field or form before entering a completion character such asa carriage return (e.g., the ‘Enter’ key). The application may exchangethis character stream with a host so that the host may analyze thecharacter stream. The host analyzes the character stream, and generatesresults predicted to be of interest to the user. For example, when thecharacter stream includes the string “plumbe”, the host may generateaccess to a yellow page database and retrieve a list of plumbersavailable to support the user. Note that the results may be identifiedwithout waiting to receive the completed character stream for “plumber”or “plumber (carriage return)”.

In another example, the user may enter “20005” as a character stream.The host may retrieve maps and business references located in the areaof Washington, D.C. that lies within zip code 20005. Note that in thisexample, the user did not identify a mapping label or include the words“zip code” to retrieve the results for zip code 20005. Rather, thecharacter stream is analyzed so that potential mapping results may beconsidered and/or displayed.

In any event, regardless of the results that are identified on the host,the results are returned to the client, which then may display all or aportion of the results. The results are displayed in such a manner thatthe user may select one of the results to launch a code segment relatedto the selected item. For example, if the displayed results include alist of plumbers available to support the user, selecting one of theentries may launch a web page operated by a particular plumber. Inanother example, a phone call, an electronic mail message or an instantmessage may be transmitted to the plumber whose entry was selected fromthe list of results.

The user may continue to enter one or more characters in the characterstream, and the results may be modified based on recently receivedcharacters. For example, when a character stream is analyzed initiallyafter entering “spring”, results related to the season of spring andproducts using the term “spring” may be returned. When the user types an“f” character, the “f” character may be transmitted to the host, whichin turn generates results related to “springf”. In one example, theprevious results related to “spring” are filtered to generate a new listthat only includes content related to “springf”. In another example, anew query is run identifying terms related to “springf”.

Regardless of how the query is structured, the host identifies resultsrelated to “springf”, which may include one or more selections relatedto cities and towns named Springfield. Results for multiple towns may bepresented in a portion of the application that the user is accessing. Inone example, the user may be allowed to select one of the results togenerate a map related to the selected Springfield. In another example,the user may be presented with entries for “Springfield, Mass.” and“Springfield, Ill.” The user may continue typing characters in thecharacter stream. When the user types in an “I” character after“Springfield” has been identified, the “Springfield, Mass.” entry may beremoved. The user then may select the “Springfield, Ill.” entry toretrieve a map of Springfield, Ill.

FIG. 1 shows a communications system 100 that enables intelligentpresentation of results related to a character stream. Generally, aclient 110 exchanges communications relating to a character stream ofnoncompletion character with a host 130 using network 120. The host 130analyzes the character stream to generate results related to thecharacter stream using, for example, a database 140 (e.g., a yellowpages directory or a mapping system). The host 130 provides one or moreresults to the client 110, which in turn displays the results.

Generally, the client 110 includes a computing device that enables auser to exchange information over a communications network. The client110 may include one or more devices capable of accessing content on thehost 130. The client 110 also may include a controller (not shown) thatprocesses instructions received from or generated by a softwareapplication, a program, a piece of code, a device, a computer, acomputer system, or a combination thereof, which independently orcollectively direct operations of the client 110. The instructions maybe embodied permanently or temporarily in any type of machine,component, equipment, storage medium, or propagated signal that iscapable of being delivered to the client 110 or that may reside with thecontroller at client 110. Client 110 may include a general-purposecomputer (e.g., a personal computer (PC)) capable of responding to andexecuting instructions in a defined manner, a workstation, a notebookcomputer, a PDA (“Personal Digital Assistant”), a wireless phone, acomponent, other equipment, or some combination of these items that iscapable of responding to and executing instructions.

In one implementation, the client 110 includes one or more informationretrieval software applications (e.g., a browser, a mail application, aninstant messaging client, an Internet service provider client, or an AOLTV or other integrated client) capable of receiving one or more dataunits. The information retrieval applications may run on ageneral-purpose operating system and a hardware platform that includes ageneral-purpose processor and specialized hardware for graphics,communications and/or other capabilities. In another implementation,client 110 may include a wireless telephone running a micro-browserapplication on a reduced operating system with general purpose andspecialized hardware capable of operating in mobile environments.

The client 110 includes one or more character stream code segments thatanalyze a character stream input to an information retrievalapplication. The character stream code segment receives the stream andstructures the exchange of the character stream with other softwareapplications on the client 110 and/or host 130. For example, thecharacter stream code segment may wait initially wait until X initialcharacters are received before sending a transmission to the host 130.The character stream code segment then may send updates to the hostevery Y subsequent characters. Alternatively, the character stream codesegment may include a delay feature set that transmits an update to thecharacter stream if there are Z seconds of user inactivity. Thus, when Xis 5 (“five”) characters, Y is 2 (“two”) characters, and Z is 1 (“one”)second, the character stream code segment for a user who types in“DULLES GAS STAT.” would request results 1) after “DULLE” 2) after“DULLES”, “DULLES GA”, DULLES GAS”, “DULLES GAS ST”, and “DULLES GASSTAT”. In the same example, if the user typed “DULLES GAS S” and pausedfor more than a second (when Z=1 second and the delay feature set isbeing used), the character stream code segment would send the “DULLESGAS S” string to the host for analysis.

The client 110 may include a preliminary analysis code segment toanalyze the character stream and send periodic updates. The preliminaryanalysis code segment screens the character stream to enhance theefficacy of the results generated for the character stream. In oneexample, the preliminary analysis code segment identifies one or moredatabases or segments likely to be associated with the predictedinterest of a consumer. Thus, when “20005” is entered, the preliminaryanalysis code segment may instruct an instruction in the transmission tothe host 130 to poll geographic information related to zip code 20005.Other examples may include the preliminary analysis code segmentidentifying a service industry (e.g., plumbers), a segment (e.g., onlinemusic), or a combination of factors (e.g., plumbers in zip code 20005)as relevant to the results that are sought by the user. With thepreliminary factors identified, the transmission may be sent to anappropriate database, or a query may be modified as a result ofperforming the preliminary analysis.

In another example, the preliminary analysis code segment also maycorrelate information that has been learned about a user with thecharacter stream. If the client is believed to be operating in aparticular area (e.g., based on billing information for the user), thecharacter stream can be modified to instruct the host 130 that resultsshould be responsive to the user's address of record. Similarly, thepreliminary analysis code segment may interface with a cache or userhistory to better identify results for the user. Thus, if a history ofuser activity indicates that the user is interested in National FootballLeague sporting events, the preliminary analysis code segment may tailorresults based on the relationship of the results to American Footballrather than International Football (soccer). The preliminary analysiscode segment also may retrieve and display locally stored results beforethe host 130 is accessed.

The client 110 may include a communications code segment that interfaceswith the information retrieval code segment (e.g., browser or key wordtool) to modify the character stream results to reflect the networkenvironment of the client. For example, when the client 110 includes awireless phone with limited bandwidth, the communications code segmentmay structure the communications exchange to limit the amount of data inresults that are returned so as not to overwhelm the network 120. Thismay include filtering the results so that no more than a specifiednumber of results are returned. Similarly, the format of the results maybe modified to reduce the bandwidth of results. For example, resultstransmitted to the client 110 may have the graphics or images removedfrom the application.

The client may include a display code segment that tailors the resultsto a display device (e.g., a monitor or a LCD (“Liquid CrystalDisplay”)). The display code segment may manage the presentation ofresults so that only the most likely results are presented. The displaycode segment may interface with the host 130 so that the number ofresults does not overwhelm the memory or display capabilities of theclient. In one example, the display code segment may instruct the host130 to transmit no more than a specified number of results. In anotherexample, the display code segment may instruct the host 130 to notreturn any result items larger than a specified size.

The client 110 may include one or more media applications. For example,the client 110 may include a software application that enables theclient 110 to receive and display an audio or video data stream. Themedia applications may include controls that enable a user to configurethe user's media environment. For example, if the media application isreceiving an Internet radio station, the media application may includecontrols that enable the user to select an Internet radio station, forexample, through the use of “preset” icons indicating the station genre(e.g., country) or a favorite.

The network 120 may include hardware and/or software capable of enablingdirect or indirect communications between the client 110 and the host130. As such, the network 120 may include a direct link between theclient 110 and the host 130, or it may include one or more networks orsubnetworks between them (not shown). Each network or subnetwork mayinclude, for example, a wired or wireless data pathway capable ofcarrying and receiving data. Examples of networks include the Internet,the World Wide Web, a WAN (“Wide Area Network”), a LAN (“Local AreaNetwork”), analog or digital wired and wireless telephone networks,radio, television, cable, satellite, and/or any other delivery mechanismfor carrying data.

The host 130 is generally capable of executing instructions under thecommand of a host controller (not shown). The host 130 may include oneor more hardware components and/or software components. An example of ahost 130 is a general-purpose computer (e.g., a server or a mainframecomputer) capable of responding to and executing instructions in adefined manner. Other examples include a special-purpose computer, aworkstation, a PC, a device, a component, other physical or virtualequipment, or some combination thereof capable of responding to andexecuting instructions.

The controller is a software application loaded on the host 130 forcommanding and directing communications exchanged with the client 110.Other examples include a program, a piece of code, an instruction, adevice, a computer, a computer system, or a combination thereof, forindependently or collectively instructing the client 110 or the host 130to interact and operate as described. The host 130 may be embodiedpermanently or temporarily in any type of machine, component, physicalor virtual equipment, storage medium, or propagated signal capable ofproviding instructions to the client 110 or the host 130.

The controller may include one or more information providingapplications to support information retrieval requests sent from theclient 110. The information providing applications may include a resultscode segment that receives a character stream from the client 110 andgenerates results responsive to a predicted interest by an individualuser. Thus, the results code segment may generate one or more resultsbased on the exchange of a character stream received from a client 110.

The results code segment also may receive character stream modifiersreceived from the preliminary analysis code segment, the communicationscode segment, the display code segment, and/or other code segments thatmodify a character stream transmission from the client. The results codesegment may process the character stream in accordance with thesemodifiers. The host 130 also may operate code segments that performoperations similar to the feature sets in the preliminary analysis codesegment, the communications code segment, and the display code segment.These host-oriented versions of these code segments may interface withthe results code segment to modify the analysis performed and/or theresults that are returned. For example, the host 130 may initiallyaccess a cache of content previously requested by the user. Thepreviously-returned results may be analyzed for relevancy beforeadditional analysis is performed or additional systems are polled.

The host 130 may interface with a database 140 to analyze the characterstream. Generally, the database 140 includes storage for a volume ofdata and a processing engine that enables the data to be sorted,searched, and analyzed. The database may be organized along functionalcriteria. For example, a mapping database may be organized bygeographical region, while a yellow pages database may be organized bybusiness as well as geographic criteria. In one example, the databasemay be structured to perform a more detailed analysis on a characterstream provided by a host 130. For example, a host 130 may receive acharacter stream from a client and redirect queries to one or moredatabases 140. Each of the redirected queries may be modified to furtherrefine the redirected query. For example, a query redirected to a yellowpages directory may have the zip code added as a selection term.Similarly, a query directed to a database that provides stock quotes mayinclude a reference describing which stocks are of interest to the user(e.g., stocks owned by the user).

Referring to FIG. 2, a flow chart 200 illustrates how a client 110 mayuse a host to intelligently present results related to a characterstream of noncompletion characters. Generally, the systems in flow chart200 relate to the systems described in FIG. 1. Flow chart 200illustrates how the client 110 receives a character stream (step 210)and exchanges the character stream with the host (step 220). The host130 receives the character stream (step 230), analyzes the characterstream (step 240), and exchanges the results with the client 110 (step250). The client 110 receives the results (step 260), displays theresults (step 270), receives a user selection (step 280), and launches acode segment related to the selected result (step 290).

Initially, the client 110 receives a character stream of one or morenoncompletion characters (step 210). Generally, receiving a characterstream of one or more noncompletion characters includes receiving andorganizing a user's keystrokes that are entered into a user application.For example, a user may be typing an entry into an address form for aweb browser, or a key word entry field in a key word utility. Receivingthe character stream may include structuring the character stream intotransmissions to be exchanged with a host 130. For example, the clientapplication may organize the transmission into a first message after apredetermined number of characters has been entered. The clientapplication may structure additional messages to be created after apredetermined number of additional characters has been entered or apredetermined time period has elapsed between the user-enteredcharacters. The noncompletion label indicates that the user has notindicated that the character entry process has been completed. In otherwords, a character stream with noncompletion characters indicates thatadditional characters may be received to modify the search results thatare displayed in response to the predicted interest of the user. Incontrast, the carriage return or “Enter” key is typically used as acompletion character that enables the user to expressly generate resultsbased on the completed character stream. Additionally, the carriagereturn is a completion character in that additional characters do notcause the results to be modified.

Regardless of how the transmissions between the client 110 and the host130 are structured, the client 110 sends the character stream with thehost (step 220), which receives the character stream (step 230). Thehost 130 then analyzes the character stream (step 240). Typically,analyzing the character stream includes relating the received characterstream to one or more results that are responsive to a predictedinterest by the user. In one example, the character stream may becompared with metadata labels used to describe content accessible to thehost 130. For example, when the character stream includes “Nashvill”,the host 130 may anticipate that “Nashvill” will eventually be completedto “Nashville, Tenn.” and identify web pages that feature Nashville,Tenn. in the web page and/or are summarized by Metadata labels with“Nashville, Tenn.”. However, the host 130 need not find identicalcharacter matches. For example, the host 130 may predict that a userentering “Nashvill” is predictive of an interest in country music.Accordingly, when the host 130 analyzes the results, the host 130 mayalso identify results related to country music, even if the results arenot related to Nashville, Tenn. In another example that illustrates howthe character stream may be analyzed using supplemental information, theresults may be translated to include country music only when the hostdetermines that the user is not from Tennessee.

Analyzing the character stream may include ranking the relativerelevancy of results. For example, widely visited Nashville web sites(e.g., the Nashville Board of Tourism) may be scored as more relevant toa non-Nashville resident than a web site that includes a Nashvilleresident's personal web log (“blog”). The results may be generated insuch a manner that the more relevant results are returned before theless relevant results.

With the character stream analyzed and the results identified, the host130 exchanges results with the client 110. The results may be controlledso as to comply with the network or display constraints of the client.For example, if the network has limited bandwidth or the client haslimited display capabilities, the host 130 may structure thetransmission to avoid network congestion or may modify the results so asprovide more suitable results (e.g., by removing images from the resultsthat are returned).

The client 110 receives the results (step 260). The client 110 mayperform additional processing to review the results to increase theefficacy of the display. For example, the client 110 may relate thereturned results to a user profile and tailor the results to bedisplayed accordingly. In another example, the client may analyze theresults to better develop the user profile and interests to increase theefficacy of subsequent character stream operations. Regardless ofwhether the results undergo intermediary processing, the client 110displays the results (step 270). The results are presented in a mannerthat enables the user to select one of the results instead of completingtheir intended sequence of characters. For example, as a user types inan entry in a key word retrieval application, a drop down window mayappear in the key word retrieval application with one or more likelyresults. As the user continues typing, the results appearing in the dropdown window may be tailored to reflect the latest analysis of thecharacter stream. When the user sees a result of interest, the user mayselect the result (step 280). Selection of a result causes theapplication to launch a code segment related to the selected result(step 290). For example, when the user selects a result describing a mapof an area, a web browser accessing a mapping web site may be launchedto display a map related to the inputted character stream.

FIG. 3 shows a flow chart 300 illustrating how a client 110 exchanges acharacter stream with a host 130 to retrieve mapping informationresiding on a database 140. Generally, the systems and operationsdescribed in FIG. 3 relate to the systems and operations describedpreviously with respect to FIGS. 1 and 2. However, FIG. 3 illustrateshow the host 130 may interface with the database 140 to retrieve resultsfor the client 110. The client 110 exchanges the character stream withthe host 130. The host, in turn, uses the database 140 in its analysisof the character stream to produce results. The host provides theresults to the client 110, which, in turn, presents the results andlaunches the appropriate code segment when the user selects the resultof interest.

Initially, the user of client 110 enters the character stream “Dulles”(step 305). The client exchanges the character stream with the host 130(step 310), which receives the character stream “Dulles” (step 315). Thehost 130 analyzes the character stream “Dulles” (step 320). The host 130may perform a local analysis of a character stream to compare thecharacter stream against popular results that are cached on the host130, while distributing customized queries to specialized databases toidentify results of greater relevance. For example, in flow chart 300,analyzing the character stream includes polling a mapping databaserelated to “Dulles” (step 325). Although flow chart 300 depicts onedatabase 140 being accessed, multiple databases may be polled. Examplesof other databases that may be polled include, but are not limited to,messaging databases, directory services, yellow pages, and financialdatabases.

The database 140 receives the poll with “Dulles” (step 330). “Dulles” isthen analyzed (step 335), and results are retrieved. For example,multiple maps related to Dulles, Virginia, could be identified and/orretrieved. This may include a map of Dulles Township, directions toDulles International Airport, and directions to various corporateoffices located in Dulles, Virginia. The results are then returned tothe host 130 (step 340).

Upon receiving the results (step 345), the host 130 exchanges the“Dulles” results with the client (step 350). Exchanging the results withthe client may include synchronizing results received from multipledatabases and identifying the results of the greatest relevance. Forexample, multiple databases may be polled to analyze the characterstream. The overall number of results returned from the client 110 maybe too large for the client 110 to process and/or display. Accordingly,the host 130 may filter and identify only those results relevant to thehost. In one example, the most relevant results are returned to theclient 110, while the pool of results remains available for analysis inlight of subsequently received characters in the character stream. Inanother example, the results from the databases are received atdifferent times. For example, a query that precisely develops and thenmatches a user demographic may take longer than a query that comparesthe results against the most commonly retrieved results. Exchanging theresults may include initially presenting the most commonly retrievedresults and then subsequently presenting the results of the longer querywhen the results of the longer query become available.

The client receives the “Dulles” results (step 355) and displays them(step 360). As shown, when the client 110 receives a user selection tolaunch a mapping application related to “Dulles” (step 365), the client110 launches a mapping application for the selected “Dulles” results(step 370).

FIG. 4 illustrates a flow chart 400 showing how the client display maybe modified based on updates to the character stream. Generally, thesystems and operations shown in FIG. 4 relate to the systems andoperations described previously with respect to FIGS. 1-3. However, flowchart 400 illustrates how updates to the character stream may generatedifferent results with which the user may interact. In particular,subsequently received characters in the character stream may generate adifferent set of results for display by the client. In this manner, theuser may modify the character stream and observe in real-time newresults based on the modifications.

Initially, the client receives the character stream “Spring” (step 405),and exchanges the character stream 410 with the host 130 (step 410). Thehost 130 receives the character stream “Spring” (step 415) and analyzesthe character stream “Spring” (step 420). The host 130 and/or thedatabase 140 identifies mapping results for the character stream“Spring” (step 425), and returns these results to the client 110 (step430). The client receives the results related to “Spring” (step 435) anddisplays them (step 440).

The client then receives and exchanges additional characters in thecharacter stream (step 445). For example, although the string “Spring”may likely identify information related to the several cities ofSpringfield, the user may enter additional information to confirm thatSpringfield is what the user has in mind and to identify the Springfieldof interest to the user. Thus, the user may enter a field “I” as thenext characters to express interest in Springfield, Illinois. The host130 and/or the database 140 receives and analyzes the additionalcharacters (step 450). The host 130 and/or the database 140 generates anew set of results related to the update, which is exchanged with theclient 110 (step 455). In the example using Springfield, Illinois,mapping and yellow page information related to the town of Springfield,Illinois may be exchanged.

The client 110 receives the updates (step 460) and enables the userinteraction based on the updates (step 465). For example, a list ofmaps, services, and other information related to Springfield, Illinoismay be displayed.

Referring to FIG. 5, exemplary results related to a character streamwith noncompletion characters are shown in GUI 500. Generally, GUI 500may be displayed on a client 110 that was primarily described withrespect to FIG. 1 using the operations described with respect to FIGS.2-4. GUI 500 illustrates code segments that may be invoked in a resultspage as a character stream is entered in a user application such as aweb browser. Specifically, text entry field 510 has received thecharacter stream “aol” without a carriage return as is indicated by thecursor “|”. GUI 500 includes a result 520 that enables a search to belaunched for the string “aol”, a result 530 that enables a code segmentto be launched for the AOL Keyword “aol”, and a result 540 that enablesa code segment that retrieves a stock quote for “AOL”, which is showntrading at 15.32 US Dollars on a stock market exchange.

Referring to FIG. 6, exemplary results for the character stream“Arlington, Va. 22209” are shown in GUI 600. Generally, GUI 600 relatesto systems, operations, and displays described previously with respectto FIGS. 1-5. However, GUI 600 illustrates the different databasesand/or applications that may be accessed from a user application. Forexample, when “Arlington, Va. 22209” is inserted in text entry field610, a searching code segment can be launched using result 620 and amapping code segment can be launched using a result 630.

In one example, the displays related to results 620 and 630 have alreadybeen retrieved by the client 110. Alternatively, content in the displaysrelated to results 620 and 630 may need to be downloaded (e.g., from thehost 130 and/or the databases 140).

FIG. 7 illustrates a GUI 700 that is related to the character stream“dentist”. Generally, GUI 700 relates to the systems, operations, anddisplays described previously with respect to FIGS. 1-6. However, GUI700 illustrates how the character stream can be analyzed to identify ayellow page entry related to the character stream.

GUI 700 includes result 710 enabling the user to launch a code segmentto search on the character stream “dentist”. Note that, although in GUI700 the character stream includes the complete text for dentist, shorterstrings, such as “dentis” or “denti” also may be analyzed and used togenerate a result that launches a search on the character strings“denti” or “dentist”. Result 720 enables the user to launch a codesegment so that the client can “Go to” the AOL keyword “Dentist”.

Result 730 enables the user to launch a code segment to search the AOLYellow Pages for “Dentist”. Note that, although result 730 features aresult to launch a search of the yellow pages for “dentist”, other GUIsmay include a list of available dentists. For example, if the user'slocation is known, a list of dentists in the user's zip code may bepresented, with the dentists sorted and presented by specialties. Aresult from the GUI may be selected to launch the dentist's web page,launch a messaging application to exchange communications with thedentist, or launch a calendaring application to create a dentistappointment.

Referring to FIGS. 8 and 9, GUIs 800 and 900 illustrate how thedisplayed results may be altered as additional characters in thecharacter stream are received. Generally, GUIs 800 and 900 relate to thesystems, operations, and displays described previously with respect toFIGS. 1-7. However, GUIs 800 and 900 differ from the previous displaysin that the results are not displayed in a drop down window as appearedin FIGS. 5-7. Also, GUIs 800 and 800 illustrate how results may begenerated and displayed using a portion of the intended character streamand also how updates to the character stream need not follow thepreceding character stream to precisely form the string of interest. GUI800 shows the multiple results 820 that are available after “Spring” hasbeen inputted into the text entry field 810. GUI 900 indicates thatafter an “I” is subsequently entered in text entry field 910, theresults may be filtered so that only the results 920 “Springfield, Ill.”are displayed. Note that none of the intervening characters (e.g., the“field,” in Springfield, Ill.) were included in the character stream.

Although GUIs 800 and 900 indicate that a mapping resource is beingaccessed, the operations described for FIGS. 8 and 9 are applicable inother applications and environments. Because the user entered thecharacter stream within a mapping application, the results may betailored to seek map results. This may be performed by searching amapping database, or by polling a host 130 with a modifier indicatingthat mapping results should be retrieved. Although GUIs 800 and 900 donot require or allow the user to specify a mapping requirement orrestriction, other GUIs may allow the user to specify the databases thatare used to analyze the character stream (not shown).

Referring to FIG. 10, GUI 1000 is an exemplary messaging display thatenables a user to exchange messaging communications. Generally, GUI 1000relates to the systems and profiles described previously with respect toFIGS. 1-9. However, GUI 1000 illustrates the messaging results that canbe displayed when the character stream relates to messaging information.For example, when a user types in “chattingchuck” in a text entry field(not shown), GUI 1000 may be displayed, enabling the user to send mail,send an instant message, add “chattingchuck” to an address book, blockmail and instant messages from “chattingchuck”, and/or view the statusor interests for “chattingchuck”. Although FIG. 10 illustrates themessaging applications or operations related to one user named“chattingchuck”, results related to more than one user may be displayed.Similarly, when the user enters an “@” character (the AT characterassociated with Internet Mail systems), options not related toelectronic mail messaging may be removed.

Other implementations are in the scope of the following claims. Forexample, although the operations described examples of retrievingresults that relate to a character stream, the results need not includethe information that will ultimately be displayed upon launching a codesegment. Rather, the results may include a label that describes theresults that may be subsequently retrieved if accepted.

Similarly, the client and host applications may include assistants andspelling correction agents to increase the efficacy of retrievedresults. Assistants may help the user by retrieving similar resultsrelated to the predicted character stream's meaning. For example, if thecharacter stream includes “German automobiles,” results that includeprominent manufacturers of German automobiles, including Mercedes, BMW,and Audi, may be retrieved. Spelling correction agents may recognizethat the user has likely entered a typographical mistake. In response,the spelling correction agents may correct the character stream byaltering the entered character stream on the desktop and/or byretrieving results related to the predicted entry.

Similar to the spelling correction agent, the system may include avalidation agent that may be used to validate a URL (“Uniform ResourceLocator”) entered in the character stream. For example, when the userenters the address for a web site, the web site address may be analyzedto determine if the device and file information actually exists and/oris correct. When the URL information is incorrect, the system mayresolve the character stream to identify the correct or related URLaddress.

The client 110 may be used to intelligently present results related tomedia communications such as streaming audio and video communications.For example, a content provider or a service provider may bedistributing a large number of “channels” or bands of discretepresentations. A user may wish to survey the channels to find channelspresenting information most relevant to the user's interests.Accordingly, the user may enter a character stream relating to contentthe user finds of interest. For audio content, the character stream mayrelate to an artist, album, or selection (e.g., song) name. For videocontent, the character stream may relate to a particular newsaffiliation (e.g., TIME or CNN), show, episode, or subject mater. In anyevent, regardless of the underlying content, the character stream may beused to retrieve results related to the user's interests as expressed inthe character stream. This may be performed by comparing the enteredcharacter stream with metadata or subtitles associated with a particularmedia selection. In one instance, the character stream may be comparedwith the subtitles for available programming to identify results for theuser. Thus, when the user enters the name in a character stream of anewsmaker, the subtitles of all available programming (includingon-demand and broadcast streams) may be searched to identify mediastreams featuring the newsmaker.

The resultant media streams may be presented in a variety of formats. Inone example, a drop down menu appears to enable the user to launch amedia application related to the retrieved results. In another example,when the media streams include video streams, a tile of video streamssimilar to the tiled orientation in FIG. 8 may be displayed. The videostream tiles may include reduced bit rate presentations to provide theuser with a brief indication of the video content available. When a userselects one of the video tiles, an instance of the video selection at agreater bit rate may be presented.

The systems and operations may be modified to operate in an Intranet ortrusted environment. For example, rather than searching publicdatabases, the system may be configured to incorporate securityprocedures and practices associated with a trusted environment. Thus, asales employee may be allowed to access customer and marketing databasesin analyzing the character stream. Engineering personnel may be allowedto review technical and operational support databases to support theirmission, but may be precluded from analyzing the character stream usinga sales database. Management and/or investigatory personnel may beallowed to access most or all databases in analyzing a character stream.

The results may be stored on the client 110 and/or the host 130. Forexample, the host 130 may cache previously returned results that may beused when analyzing subsequent character streams. In another example,previously selected results may be stored on the client and subsequentcharacter streams may initially be accessed using the previously-storedresults.

The client 110 may enable the user application to launch a messagingcode segment. Alternatively, the user may be entering the characterstream in a messaging application. For example, the user may be enteringa character stream in an instant messaging application. The instantmessaging application may transmit the character stream to a host 130for analysis. The client 110 may receive the results and enable theclient to transmit an instant message when the results indicate that anidentified user is online.

Exchanging the updates may include exchanging only the portion of thecharacter stream that has changed since the character stream was lastexchanged. For example, as a user initially types in information into afirst application, the first application may send a message to the host130 with the initially entered character stream (e.g., “Spring”). As theuser enters updates to the character stream (e.g., by typing “field”after “Spring”), the client 110 may send the new information withoutsending the old information (e.g., the client 110 subsequently sends“field” instead of “Springfield”). Alternatively, the client 110 maysend the current character stream. For example, the client 110 may firstsend “Spring” and then later transmit “Springfield”.

The client 110 and/or host 130 may determine that there are no relevantresults and operate to preclude additional processing resources frombeing used. For example, the user may be entering character streams forwhich the host 130 has no information and generates no results. When thehost 130 determines that there is no information, the host 130 mayinterface with the client 110 to prevent additional updates from beingexchanged. Such a condition occurs when the user enters a characterstream that does not relate to content accessible by the host 130. Forexample, the host 130 may determine that CHARACTERSTREAM1 will not yieldany results, and no extension of CHARACTERSTREAM1 will yield anyresults. If the user enters additional information, such asCHARACTERSTREAM123, the first application will not send any updatedinformation to the host 130. However, if the user uses the DELETE key tomodify the character stream so that CHARACTERSTREAM1 is changed toCHARACTERSTREAM, the character stream may be exchanged.

The client 110 may perform preliminary analysis to preclude commoncharacter streams from being analyzed where the common character streamgenerates results that are not responsive to the predicted interest of auser. For example, when “the” appears in a character stream,particularly in an initial portion of the character stream, generatingresults using the character stream “the” likely generates too manyresults, few, if any, of which are responsive to the predicted interestof the user. Accordingly, exchanging the character stream may be delayeduntil the character stream is meaningful. Thus, exchanging the characterstream “the” may be delayed until character stream reads “the Greekislands” or another character stream likely to generate meaningfulresults. Similarly, the character stream may be restructured to removestrings in the character stream not likely to assist in the analysis(either on the client 110 or the host 130). Thus, strings appearing inthe character stream such as “the”, “a”, and “this” may be removed fromthe character stream prior to exchanging the character stream.

Displaying the results may include displaying the results directly inaddition to displaying a label for the results that enables a codesegment for the results to be launched. For example, the results mayinclude an actual stock quote rather than a label for a code segmentthat generates a stock quote. The displayed result may include a capsuleor brief summary for a news item. The capsule also may be configured toretrieve a more detailed article on the news item when the user selectsthe news item.

Other examples of results that may be retrieved may include, but are notlimited to, phone numbers and/or keywords. Clicking on a result with aphone number may allow an Internet phone call to be placed. The phonecall may be bridged to a telephone network or connected to an IP phone(e.g., a virtual phone application residing in a dialed user's PC).

The results and additional information descriptive of results previouslyreturned or selected may be stored on the client 110 and/or the host130. For example, the most recently accessed results may be cached onthe client 110, while a more extensive history of results may be cachedon the host 130. The stored results may be accessed and used to analyzeand generate results responsive to a user's predictive interest.

To illustrate how stored results may be used to analyze a subsequentcharacter stream, a previous search related to the National FootballLeague (NFL) may generate a series of metadata tags. These metadata tagsmay be stored in a profile associated with the user. For example, theuser searching for NFL-related information may have the metadata tags“NFL”, and “Football” added to their user profile. The metadata tags maybe used in performing subsequent analysis. Thus, when the user types in“Falcons”, additional metadata tags related to the multiple meanings of“Falcons” may be generated and analyzed using the metadata tagspreviously generated. Examples of metadata tags related to Falcons mayinclude terms such as “NFL”, “Audubon Society”, and “Sport of Kings”.The metadata tags from the previous search on the NFL may be comparedagainst metadata tags generated by entering “Falcons”. By correlatingthe results from a previous search with known metadata tags for the termof interest, results that are likely to be more responsive to thepredicted interest of a user are returned. In this case, correlating theresults of the previous search with the present search generates resultsrelated to the NFL's Atlanta Falcons.

The results from multiple users may be used to determine results thatare more responsive to a predictive interest of a different user. Forexample, if most of the users entering “Falcons” as a character streamare determined to be interested in the NFL, a default rule may becreated and adopted that returns results related to the NFL sports teamin response to “Falcons.” A finer analysis may be performed bysuspending the default rule when the user has a profile or has expressedan interest in other, non-sports aspects of “falcons” or used modifierssuch as “birds”, “Audubon Society”, or “kestrels”.

Other implementations are within the scope of the following claims.

What is claimed is:
 1. A method comprising: receiving a character streamof non-completion characters input by a user; analyzing, using at leastone processor, the character stream with an assistant; initiating asearch wherein the search relates to the analysis of the characterstream; and displaying one or more search results prior to input of acompletion character by the user.
 2. The method as recited in claim 1,further comprising determining a predicted meaning of the characterstream.
 3. The method as recited in claim 2, further comprisingperforming the search using the predicted meaning of the characterstream.
 4. The method as recited in claim 2, further comprisingperforming the search using the character stream and the predictedmeaning of the character stream.
 5. The method as recited in claim 1,further comprising expanding the search based on the analysis of thecharacter stream.
 6. The method as recited in claim 1, furthercomprising modifying the search based on the analysis of the characterstream.
 7. The method as recited in claim 1, further comprisingfiltering the search results based on the analysis of the characterstream.
 8. The method as recited in claim 1, wherein the completioncharacter is a carriage return.
 9. A non-transitory computer-readablestorage medium including a set of instructions that, when executed,cause at least one processor to perform steps comprising: receiving acharacter stream of non-completion characters input by a user; analyzingthe character stream with an assistant; initiating a search wherein thesearch relates to the analysis of the character stream; and displayingone or more search results prior to input of a completion character bythe user.
 10. The computer-readable storage medium as recited in claim9, further comprising instructions that, when executed, cause at leastone processor to perform the step of determining a predicted meaning ofthe character stream.
 11. The computer-readable storage medium asrecited in claim 10, further comprising instructions that, whenexecuted, cause at least one processor to perform the step of performingthe search using the predicted meaning of the character stream.
 12. Thecomputer-readable storage medium as recited in claim 10, furthercomprising instructions that, when executed, cause at least oneprocessor to perform the step of performing the search using thecharacter stream and the predicted meaning of the character stream. 13.The computer-readable storage medium as recited in claim 9, furthercomprising instructions that, when executed, cause at least oneprocessor to perform the step of modifying the search based on theanalysis of the character stream.
 14. The computer-readable storagemedium as recited in claim 13, further comprising instructions that,when executed, cause at least one processor to perform the step ofexpanding the search based on the analysis of the character stream. 15.The computer-readable storage medium as recited in claim 13, furthercomprising instructions that, when executed, cause at least oneprocessor to perform the step of filtering the search results based onthe analysis of the character stream.
 16. The computer-readable storagemedium as recited in claim 13, wherein the completion character is acarriage return.
 17. A method comprising: receiving, at a server, acharacter stream of non-completion characters input by a user at aclient computing device; analyzing, using at least one processor, thecharacter stream with an assistant; generating a plurality of searchresults based on the analysis of the character stream; and sending theplurality of search results to the client computing device prior toinput of a completion character by the user at the client computingdevice.
 18. The method as recited in claim 17, further comprisingdetermining a predicted meaning of the character stream.
 19. The methodas recited in claim 17, wherein generating the plurality of searchresults comprises generating one or more search results related to apredicted meaning of the character stream.
 20. The method as recited inclaim 17, further comprising deriving an alternative character stream.21. The method as recited in claim 20, further comprising: generatingone or more search results using the alternative character stream; andupdating the plurality of search results to include the one or moresearch results generated from the alternative character stream.
 22. Themethod as recited in claim 17, further comprising: receiving one or moreadditional non-completion characters input by the user at the clientcomputing device; updating the character stream of non-completioncharacters with the one or more additional non-completion characters;analyzing the updated character stream with the assistant; generating aplurality of updated search results based on the analysis of the updatedcharacter stream; and sending the plurality of updated search results tothe client computing device prior to input of a completion character bythe user at the client computing device.
 23. The method as recited inclaim 17, wherein the client computing device is a mobile device. 24.The method as recited in claim 23, wherein the mobile device is apersonal digital assistant.
 25. The method as recited in claim 18,wherein the mobile device is a wireless phone.
 26. The method as recitedin claim 25, wherein the wireless phone is running a micro-browserapplication on a reduced operating system.
 27. The method as recited inclaim 17, wherein the completion character is a carriage return.
 28. Anon-transitory computer-readable storage medium including a set ofinstructions that, when executed, cause at least one processor toperform steps comprising: receiving a character stream of non-completioncharacters input by a user at a client computing device; analyzing thecharacter stream with an assistant; generating a plurality of searchresults based on the analysis of the character stream; and sending theplurality of search results to the client computing device prior toinput of a completion character by the user at the client computingdevice.
 29. The computer-readable storage medium as recited in claim 28,further comprising instructions that, when executed, cause at least oneprocessor to perform the step of determining a predicted meaning of thecharacter stream.
 30. The computer-readable storage medium as recited inclaim 29, wherein generating the plurality of search results comprisesgenerating one or more search results related to the predicted meaningof the character stream.
 31. The computer-readable storage medium asrecited in claim 28, further comprising instructions that, whenexecuted, cause at least one processor to perform the steps of:receiving one or more additional non-completion characters input by theuser at the client computing device; updating the character stream ofnon-completion characters with the one or more additional non-completioncharacters; analyzing the updated character stream with the assistant;generating a plurality of updated search results based on the analysisof the updated character stream; and sending the plurality of updatedsearch results to the client computing device prior to input of acompletion character by the user at the client computing device.
 32. Thecomputer-readable storage medium as recited in claim 28, furthercomprising instructions that, when executed, cause at least oneprocessor to perform the step of deriving an alternative characterstream.
 33. The computer-readable storage medium as recited in claim 32,further comprising instructions that, when executed, cause at least oneprocessor to perform the steps of: generating one or more search resultsfrom the alternative character stream; and updating the plurality ofsearch results to include the one or more search results generated fromthe alternative character stream.
 34. The computer-readable storagemedium as recited in claim 28, wherein the completion character is acarriage return.